package com.dragon.refect.error;

/**
 * 直接使用双引号声明出来的String对象会直接存储到常量池
 * 如果不是双引号声明出来的String对象，可以使用String提供的intern()方法。intern()方法会从字符串常量池中查找当前字符串是否存在，
 * 若不存在会将当前字符串放入常量池中
 * <p>
 * Jdk1.7版本之后，String.intern()操作和常量池都做了修改，主要包括以下两点：
 * 1;将常量池移动到了Java Heap区
 * 2;String.intern()方法，如果存在堆中的对象，会直接保存对象的引用，而不会重新创建对象。
 *
 * @author dragon
 * @since 2019/12/12
 */
public class StringInternTest2 {

    public static void main(String[] args) {
        String s1 = new String("a") + new String("1");
        s1.intern();
        String s2 = "a1";
        System.out.println(s1 == s2);
    }
}
